<?php 
/**
 * 
 * Controlador de envio de sms mail
 * @author natanael
 * 
 */
class SendInbound extends Controller
{
	public function __construct()
	{
	    parent::Controller();
	    $this->load->library(array('chcalendario','ChFopen','email'));
	    $this->load->model(array('msetupmessages', 'mscript', 'usuarios','mseguimientosend',
	                             'mdetallesend', 'mfrom', 'mtransaccionentrada', 'mservicios','detallerentradas'));
	}
	
   public function index()
   {
	   $this->load->view('main', array('content_page' => 'headerib','menutop'=>'5'));
   }
	
   public function sendSms($arrayData)
   {   
   	   $this->_send($arrayData, "SMS");    
   }
   
   public function sendMail($arrayData)
   {   
   	   $this->_send($arrayData, "MAIL");    
   }
   
   private function _send($arrayData, $tipo)
   {
         $arrayData = explode("-",$arrayData);
   	     $idSeguimientoSend = 0;
   	     $contadorSend = 0; 
   	     
   	     $dataSeguimientoSend = array("Id_Usuario"      => $this->session->userdata('LOGGED_USR_ID'),
   	                                  "Fecha"           => date("Y-m-d")." 00:00:00",
   	                                  "Type"            => $tipo,
   	                                  "Session"         => 3);
   	   
         if ($this->mseguimientosend->addReguistro($dataSeguimientoSend) == true){
                 $dataWhere = array("Id_Usuario"   => $this->session->userdata('LOGGED_USR_ID'),
              	                     "Type"        => $tipo,
              	                     "Session"     => 3);
              	          
              	  $objeto = $this->mseguimientosend->loadRegistroByWhere($dataWhere);      
                  $idSeguimientoSend = $objeto[0]->getIdSeguimiento();
         }
         
         foreach ($arrayData as $k){
   	   	    	  
   	          $objetoInbound = $this->mtransaccionentrada->LoadjurisdiccionById($k);
   	          
		      $whereArray = array("Type"        => $tipo,
		                          "Id_Service"  => $objetoInbound->getIdServicios());
		    
		      $idScript = $this->msetupmessages->LoadObjetoByArray($whereArray);
		      
		      if ($idScript == FALSE) {
		      	  if ("SMS" == $tipo){
		      	     $idScript = 10;
		      	  }else{
		      	     $idScript = 5;
		      	  }
		      	  
		      }else{
		          $idScript = $idScript->getIdScript();
		      }
		    
		      $objetoScript = $this->mscript->LoadRegistroById($idScript);
		      $objetoUser = $this->usuarios->LoadUsuarioById($this->session->userdata('LOGGED_USR_ID'));	

		      /**
		       * @var $bodyReal String
		       * Retorna el Cuerpo del mensage Ya Filtrado Con todo Por Haora solo es balido para los SMS
		       * 
		       */
		      $servicio = $this->mservicios->LoadServicioById($objetoInbound->getIdServicios());
		      
		      $bodyReal = $this->bodyMensage($objetoInbound->getReferencia(), $objetoInbound->getConctato(), $servicio->getNombreServicio(), $objetoUser->getNombreUsuario(), $objetoUser->getEtx(), $objetoScript->getBodyScript());
		    
		      
		      /** Esta parte es solo valida para los SMS Typo */
		      
		      if ($tipo == "SMS") {
		      	       $expTel = array('/\ /', '/\-/','/\//','/\./','/\,/','/([A-Z])/','/([a-z])/');
      	               $telefono1 = trim(preg_replace($expTel,"", $objetoInbound->getTelefono()));
      	               $telefono2 = trim(preg_replace($expTel,"", $objetoInbound->getTelefono2()));
		    
      	               $contadorSend += $this->_sendSms($objetoInbound->getReferencia(), $objetoInbound->getConctato(), $telefono1, $idSeguimientoSend, $bodyReal, $objetoInbound->getIdServicios());
      	               $contadorSend += $this->_sendSms($objetoInbound->getReferencia(), $objetoInbound->getConctato(), $telefono2, $idSeguimientoSend, $bodyReal, $objetoInbound->getIdServicios()); 

      	               $descripcionProceso = "SMS - ".$bodyReal;
      	                $datoUpTransacion = array("ProximoContacto"   => $this->chcalendario->sumaFechas(2));
		      }
		      
		      if ($tipo == "MAIL"){
		           
		           $contadorSend += $this->_sendMail($objetoInbound->getEmail(), $objetoInbound->getReferencia(), $bodyReal, $objetoInbound->getIdServicios(), $objetoInbound->getConctato(), $idSeguimientoSend, $objetoScript->getSubjectScript());
		           $descripcionProceso = "Envio automatico de MAIL";
		           
		           $datoUpTransacion = array("ProximoContacto"   => $this->chcalendario->sumaFechas(7));
		           
		      }
		           $this->mtransaccionentrada->updateRegistro($datoUpTransacion, $objetoInbound->getIdTransaccion());
		      
		       	   $dataInbaunt = array("ContenidoDetalle"    => $descripcionProceso,
   	                                   "IdTrasacionEntrada"   => $objetoInbound->getIdTransaccion(),
   	                                   "IdUsuario"            => $this->session->userdata('LOGGED_USR_ID'),
		       	   					   "DateSistema"          => date("Y-m-d H:i:s"),
				        		       "TimeSistema"          => date("H:i:s"),
				        		       "idTipoSeguimiento"    => 2);
		       	   
		       	    
   	   
   	   $this->detallerentradas->createDetalle($dataInbaunt);

   	   }
   	   
   	   $this->mseguimientosend->upDateRegistro(array("CantidadSegimiento" => $contadorSend), $idSeguimientoSend);
   	   
  
   	   
   	    if ($tipo == "SMS"){
   	         chmod ("public/sms/sms_data5.txt", 0777); 	    
   	    }
   	   
   	   
   	   $this->session->set_flashdata('error', 2);
   	   $this->session->set_flashdata('status_message', 'Seguimiento enviado correctamente');
   	   redirect('transaccionentrada/pventas');
   }
   
  private function _sendSms($referencia, $contacto, $telefono, $idSeguimiento, $bodyReal, $etapa)
   {
        if (strlen($telefono) > 7){
      	    	
        	$telefono = substr($telefono, 0, 10);
        	
      	    	$arrayDetalleSend = array("Id_Etapa"       => $etapa,
      	    	                          "Referencia"     => $referencia,
      	    	                          "Contacto"       => $contacto,
      	    	                          "telefono"       => $telefono,
      	    	                          "Id_Seguimiento" => $idSeguimiento);
      	    	
      	    	$this->mdetallesend->addReguistro($arrayDetalleSend);
      	    	
      	        $this->chfopen->generalCsv($telefono, $bodyReal);
      	        
      	        return 1;
        }
          
        return 0;
    }
    
  private function _sendMail($mail, $referencia, $bodyMensage, $etapa, $contacto, $idSeguimiento, $subjectScript)
  {      	
    	if (strlen($mail) > 5) {
    		  
    		   /** $from 1  es igual a info@company24h.com */
               $from = $this->mfrom->LoadRegistroById(1);
 
               $this->email->from($from->getBody(), $from->getTitle());
               $this->email->to($mail);
               $this->email->set_mailtype('html');
               $this->email->subject($contacto.' '.$subjectScript);
               $this->email->message($bodyMensage);

               $this->email->send();
          
               $arrayDetalleSend = array("Id_Etapa"       => $etapa,
      	    	                         "Referencia"     => $referencia,
      	    	                         "Contacto"       => $contacto,
      	    	                         "telefono"       => $mail,
      	    	                         "Id_Seguimiento" => $idSeguimiento);
      	    	
      	       $this->mdetallesend->addReguistro($arrayDetalleSend);
      	       
      	       return 1;
    	}
    	
    	   return 0;
    
    }
   
   private function bodyMensage($referencia = false, $conctato = false, $servicio = false, $usuario = false, $ext = false, $body)
   {
   	      if($referencia != false)
            $body = trim(preg_replace(array('/\XXXREFERENCIA/'), $referencia, $body));

          if ($conctato != false)  
            $body = preg_replace(array('/\XXXCONTACTO/'), $conctato, $body);
            
          if ($servicio != false)  
            $body = preg_replace(array('/\XXXSERVICIO/'), $servicio, $body);
            
          if ($usuario != false)  
            $body = preg_replace(array('/\XXXUSUARIO/'), $usuario, $body);
            
          if ($ext != false)  
            $body = preg_replace(array('/\XXXEXT/'), $ext, $body); 

           return $body;  
   }
	
}